package com.action.handle;

import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;

import com.action.entity.PayResult;
import com.action.entity.event.PayResultBackEven;
import com.action.ui.activity.SendRedPacketActivity;
import com.base.app_core.util.AppConstants;
import com.hwangjr.rxbus.RxBus;

public class AlipayHandler extends Handler {

    public static final int SDK_PAY_FLAG = 1;

    private SendRedPacketActivity activity;

    public AlipayHandler(SendRedPacketActivity activity) {
        this.activity = activity;
    }

    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG: {
                PayResult payResult = new PayResult((String) msg.obj);
                // 支付宝返回此次支付结果及加签，建议对支付宝签名信息拿签约时支付宝提供的公钥做验签
                String resultInfo = payResult.getResult();
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为“9000”则代表支付成功，具体状态码代表含义可参考接口文档
                if (TextUtils.equals(resultStatus, "9000")) {
                    activity.showToast("支付成功");
                    RxBus.get().post(new PayResultBackEven(AppConstants.PAY_SUCCESS,AppConstants.PAY_TYPE_ALI));
                } else {
                    // 判断resultStatus 为非“9000”则代表可能支付失败
                    // “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认，最终交易是否成功以服务端异步通知为准（小概率状态）
                    if (TextUtils.equals(resultStatus, "8000")) {
                        activity.showToast("支付结果确认中");
                    } else {
                        // 其他值就可以判断为支付失败，包括用户主动取消支付，或者系统返回的错误
//                        activity.showToast("支付失败");
//                        Intent intent = new Intent();
//                        intent.putExtra("pay_result", "fail");
//                        activity.setResult(Activity.RESULT_OK, intent);
//                        activity.finish();
                        RxBus.get().post(new PayResultBackEven(AppConstants.PAY_ERROR,AppConstants.PAY_TYPE_ALI));
                    }
                }
                break;
            }
            default:
                break;
        }
    }
}